BJDCTF2020 ZJCTF,不过如此*

[BJDCTF2020]ZJCTF,不过如此*
前言
出自BUUCTF 练习场,也有相关的配套课本(我看的是《CTF实战 从入门到提升》,感觉还行,但有不少细节感觉还是得查资料才能懂)
题目
打开靶场,这里直接给出了源码,接下来要做的第一步就是代码审计≡(▔﹏▔)≡
根据源码(..•˘_˘•..)
第一个if说明我们需要传入text=I have a dream
才能进行下面的操作
下面一个if说明要传入一个file
参数,不能传入flag字符防止直接拿到flag
后面可以看到有include($file)
,并且后面加上了注释next.php
,表明需要用php伪协议来包含文件,而文件基本就是next.php
那具体怎么做呢?(•ิ_•ิ)
这里提供两种方法,一种是data
伪协议,另一种是php://input
目前只提供如何提取出文件next.php,后续的涉及其他知识暂且放着,留个坑
data伪协议
在BurpSuite里面,加上payload:?text=data:text/plain,I have a dream
解第一步if不一样之外,其他后面的内容都一样,这里就不重复了,接着往下看吧
php://input
在BurpSuite里面,用php://input
传入I have a dream
给text
这里只是完成了第一层if判断
接下来,对于要读取文件file参数,则传入php://filter/read=convert.Base64-encode/resource=next.php
。
解释一下这串payload
- 使用的是php的filter协议,用于数据过滤
- read后面跟上需要使用的过滤器,而这里的过滤器就是
convert.Base64-encode
,表明调用Base64过滤器对文件内容进行编码再输出 - resource后面接输入的文件,文件会被读取然后以Base64的形式输出
然后在改包的里面完成操作,读取next.php文件
取出这串字符,用Base64解码即可得到next.php文件,提供一个在线解码工具锤子
之后的代码审计暂时不做,留个坑在这
总结
这里需要掌握php的文件包含的知识,如果觉得自己不够掌握的推荐看一下PHP文件包含漏洞利用思路与Bypass总结手册 ,这里面基本涵盖了所有的情况,耐心阅读吧~
- Title: BJDCTF2020 ZJCTF,不过如此*
- Author: ZJ
- Created at : 2024-09-14 00:00:00
- Updated at : 2024-12-11 01:20:40
- Link: https://blog.overlordzj.cn/2024/09/14/ctf/writeup/web/buuctf/[BJDCTF2020]ZJCTF-不过如此/
- License: This work is licensed under CC BY-NC-SA 4.0.